平衡二叉树、B树、B+树、B*树入门

学习自

https://zhuanlan.zhihu.com/p/27700617

 

平衡二叉树

 

B树

(图中示例为m=3阶)

每个节点(除了根节点)有:2<=k<=m个子节点
关键字?

叶子节点都在同一层

如果一个非叶节点有n个子节点,那么这个非叶节点存放的关键字数有n-1个。

 

3、8、31、11、23、29、50、28怎么构建出一个5阶树呢?

关键字数:3<=k<=4

一旦关键字数小于3就要进行合并,关键字数大于4就要进行拆分

 


最后的这个合并,其实是先进行右下角的5个的拆分,拆分成

这种形式,但是不满足非根节点的关键字数目限制,然后就向上合并了。

 

删除

关键字数小于二时先从子节点取,子节点没有符合条件时就向向父节点取,取中间值往父节点放

 

B+树

 

比之B树的优点:

1.更稳定

2.查找效率更高,充分地利用了节点的空间

 

叶子节点存放所有的关键字及关键字记录的指针(也就是我们存放的数据)。

所有父节点,都只是存放孩子的索引,并非关键字指针。所以父节点的作用就是让你正确地找到孩子。

 

B*树

他是B+树的变种,但是

1.B*树的关键字个数最小为 2/3m向上取整

2. B*树节点满时会检查兄弟节点是否满(因为每个节点都有指向兄弟的指针),如果兄弟节点未满则向兄弟节点转移关键字,如果兄弟节点已满,则从当前节点和兄弟节点各拿出1/3的数据创建一个新的节点出来。向兄弟节点转移关键字的特性使得B*树额分解次数变得更少。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值